{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Creating Transferable Clean Label Attacks in ART with Bullseye Polytope Clean Label Attacks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os, sys\n",
    "from os.path import abspath\n",
    "\n",
    "module_path = os.path.abspath(os.path.join('..'))\n",
    "if module_path not in sys.path:\n",
    "    sys.path.append(module_path)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.optim as optim\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torchvision\n",
    "import torchvision.transforms as transforms\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from art.estimators.classification import PyTorchClassifier\n",
    "from art.attacks.poisoning import BullseyePolytopeAttackPyTorch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded and verified\n",
      "Files already downloaded and verified\n"
     ]
    }
   ],
   "source": [
    "transform = transforms.Compose(\n",
    "    [transforms.ToTensor(),\n",
    "     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
    "trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
    "                                        download=True, transform=transform)\n",
    "trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,\n",
    "                                          shuffle=True, num_workers=2)\n",
    "\n",
    "testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
    "                                       download=True, transform=transform)\n",
    "testloader = torch.utils.data.DataLoader(testset, batch_size=4,\n",
    "                                         shuffle=False, num_workers=2)\n",
    "\n",
    "classes = ('plane', 'car', 'bird', 'cat',\n",
    "           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     plane       deer       ship      plane\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def imshow(img):\n",
    "    img = img / 2 + 0.5     # unnormalize\n",
    "    npimg = img.numpy()\n",
    "    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
    "    \n",
    "# get some random training images\n",
    "dataiter = iter(trainloader)\n",
    "images, labels = dataiter.next()\n",
    "# show images\n",
    "imshow(torchvision.utils.make_grid(images))\n",
    "# print labels\n",
    "print(' '.join('%10s' % classes[labels[j]] for j in range(4)))\n",
    "base_labels = labels.numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "net = nn.Sequential(\n",
    "    nn.Conv2d(3, 6, 5),\n",
    "    nn.ReLU(),\n",
    "    nn.MaxPool2d(2, 2),\n",
    "    nn.Conv2d(6, 16, 5),\n",
    "    nn.ReLU(),\n",
    "    nn.MaxPool2d(2, 2),\n",
    "    nn.Flatten(),\n",
    "    nn.Linear(16 * 5 * 5, 120),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(120, 84),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(84, 10))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1,  2000] loss: 2.136\n",
      "[1,  4000] loss: 1.774\n",
      "[1,  6000] loss: 1.608\n",
      "[1,  8000] loss: 1.553\n",
      "[1, 10000] loss: 1.497\n"
     ]
    }
   ],
   "source": [
    "NUM_EPOCHS = 1\n",
    "for epoch in range(NUM_EPOCHS):  # loop over the dataset multiple times\n",
    "\n",
    "    running_loss = 0.0\n",
    "    for i, data in enumerate(trainloader, 0):\n",
    "        # get the inputs; data is a list of [inputs, labels]\n",
    "        inputs, labels = data\n",
    "\n",
    "        # zero the parameter gradients\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        # print statistics\n",
    "        running_loss += loss.item()\n",
    "        if i % 2000 == 1999:    # print every 2000 mini-batches\n",
    "            print('[%d, %5d] loss: %.3f' %\n",
    "                  (epoch + 1, i + 1, running_loss / 2000))\n",
    "            running_loss = 0.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "classifier = PyTorchClassifier(net, loss, (3, 32, 32), 10, clip_values=(0,1), preprocessing=(0.5, 0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "target = images[0].unsqueeze(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "attack = BullseyePolytopeAttackPyTorch(classifier, target.numpy(), 9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "poison, p_labels = attack.poison(images.numpy() / 2 + 0.5, base_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "imshow(torchvision.utils.make_grid(torch.from_numpy(poison)))\n",
    "print(' '.join('%10s' % classes[base_labels[j]] for j in range(4)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
